From: Florian Müllner Date: Wed, 11 Mar 2020 19:09:11 +0000 (+0100) Subject: extensionSystem: Require Extensions app for updates X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~751^2^2~44 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=660a2b6e6230844ac29e9f1eab4504131897ecf5;p=gnome-shell.git extensionSystem: Require Extensions app for updates While we don't technically need the app to download and apply updates, we do require it for notifying the user about available updates and listing extensions with pending updates. So instead of intransparently applying updates in the background without the user noticing, disable updates altogether if the Extensions app is not installed. https://gitlab.gnome.org/GNOME/gnome-shell/issues/2346 --- diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js index 306aaf14f..08ebc2fec 100644 --- a/js/ui/extensionDownloader.js +++ b/js/ui/extensionDownloader.js @@ -108,6 +108,9 @@ function gotExtensionZipFile(session, message, uuid, dir, callback, errback) { } function downloadExtensionUpdate(uuid) { + if (!Main.extensionManager.updatesSupported) + return; + let dir = Gio.File.new_for_path( GLib.build_filenamev([global.userdatadir, 'extension-updates', uuid])); @@ -126,6 +129,9 @@ function downloadExtensionUpdate(uuid) { } function checkForUpdates() { + if (!Main.extensionManager.updatesSupported) + return; + let metadatas = {}; Main.extensionManager.getUuids().forEach(uuid => { let extension = Main.extensionManager.lookup(uuid); diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index f2e8db79d..4fab0c334 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -60,6 +60,11 @@ var ExtensionManager = class { ExtensionDownloader.checkForUpdates(); } + get updatesSupported() { + const appSys = Shell.AppSystem.get_default(); + return appSys.lookup_app('org.gnome.Extensions.desktop') !== null; + } + lookup(uuid) { return this._extensions.get(uuid); } @@ -481,6 +486,9 @@ var ExtensionManager = class { } _installExtensionUpdates() { + if (!this.updatesSupported) + return; + FileUtils.collectFromDatadirs('extension-updates', true, (dir, info) => { let fileType = info.get_file_type(); if (fileType !== Gio.FileType.DIRECTORY)